import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;

public class Usuario extends Actor
{
    /**
     *  clase usuario, efectua el movimiento del jugador y al momento de tocar los disparos de los ovnis los bloquea para que
     *  no puedan pasar y dañe a sus animales
     */
    protected static final int distancia=8;
    private MiMundo mundo;
    Actor disparo;
    
    
    /**
     *  es donde se hacen las comparaciones de si toca o no el disparo y hace el movimiento con als teclas izquierda y deracha del
     *  teclado de la computadora.
     */
    public void act() 
    {
        mueveHorizontal();
        if(tocaDisparo()) {
            ChecaImpacto();
        }
    }    

    
    /**
     *  el movimiento del usuario dependiendo de la tecla que se este presionando
     */
    public void mueveHorizontal()
    {
        if (Greenfoot.isKeyDown("left"))
           {
            if (getX()>150)
            {
                setImage("ppl3.png");
                setLocation(getX()-distancia,getY());
            }
        }
           if (Greenfoot.isKeyDown("right"))
           {
            if (getX()<750)
              {
                setImage("ppl3.png");
                setLocation(getX()+distancia,getY());
              }
        }
    }
    
    /**
     *  metodo que checa si hay contacto con el disparo y si manda a llamar el metodo checaImpacto()
     */
    public boolean tocaDisparo()
    {
        Actor Dispara = getOneObjectAtOffset(0, 0, Disparo.class);
        if(Dispara != null) {
            return true;
        }
        else {
            return false;
        }
    }
    
    
    /**
     *  si el usuario es tocado por el disparo hace las acciones de desaparecer el disparo del mundo
     */
     private void ChecaImpacto()
    {
            Actor Disparo = getOneObjectAtOffset(0, 0, Disparo.class);
            if(Disparo != null) {
            // desaparece el disparo
            getWorld().removeObject(Disparo);
        }
    }
    

    /**
     *  se agraga este objeto al mundo
     */
    public void addedToWorld(World world) {
        mundo = (MiMundo) world;        
     }
}